package cn.hyh.core.vo;

import java.time.*;
import java.util.Date;

/**
 * @auther :hyh
 * @desc :   JDK8 关于时间类的使用。
 * @date :2019/8/5
 */
public class TestLocal {
    //与 数据库 交互, 与 Json 交互时还是建议使用 java.util.Date

//    Instant——它代表的是时间戳
//    LocalDate——不包含具体时间的日期，  年月日
//    LocalTime——它代表的是不含日期的时间 , 时分秒
//    LocalDateTime——它包含了日期及时间，不过还是没有偏移信息或者说时区。
//    ZonedDateTime——这是一个包含时区的完整的日期时间，偏移量是以UTC/格林威治时间为基准的
//     MonthDay  包含月日， 可用于 节日生日的判断
//     Year:  有判断一年的天数/是否闰年的方法
//    YearMonth:

    public static void main(String[] args) {
        LocalDateTime now1 = LocalDateTime.now();  //完整的日期
        System.out.println("localDateTime==>"+now1);

        System.out.println("------------------------------");
        System.out.println(now1.getYear());
        System.out.println(now1.getMonthValue());   //jdk8  不需要在写 -1 
        System.out.println(now1.getDayOfWeek().getValue());
        System.out.println(now1.getDayOfMonth());
        System.out.println(now1.getHour());
        System.out.println(now1.getMinute());
        System.out.println(now1.getSecond());
        System.out.println(now1.getNano());
        System.out.println("------------------------------");


        LocalDate date1 = now1.toLocalDate();
        System.out.println(date1);


        LocalDate date = LocalDate.now();  //年月日。
        System.out.println("localDateTime==>"+date);

        LocalDateTime localDateTime = date.atStartOfDay();  //将该日期转换为  完整日期 ，从午夜开始算时分秒。
        System.out.println("atStartOfDay==>"+localDateTime);

        LocalTime now = LocalTime.now();
        System.out.println(now);

        System.out.println("----------of创建指定的日期-------------------");
        LocalDate of = LocalDate.of(2019, 5, 12);
        System.out.println(of);

        System.out.println("------------日期比较---------------------------------");

        LocalDate localDate = LocalDate.of(2019 , 8, 7);
        LocalDate nowDay= LocalDate.of(2019,  8, 8);
        System.out.println(nowDay.isBefore(localDate));  //false
        System.out.println(nowDay.isAfter(localDate));//true
        System.out.println(nowDay.equals(localDate));//false

        //MonthDay  包含月日， 可用于 假日生日的判断
        MonthDay of1 = MonthDay.of(10, 1);
        MonthDay from = MonthDay.from(nowDay);
        System.out.println(of1.equals(from));

        System.out.println(Year.from(nowDay)+"年有多少"+Year.from(nowDay).length()+"天");
        System.out.println(Year.from(nowDay)+"年是闰年?==>"+Year.from(nowDay).isLeap());

        LocalDateTime time = LocalDateTime.now();
        LocalDateTime localDateTime1 = time.minusHours(1);

          // plusXXX 表示加上多少时间
        // minusXXX   表示减去多少时间，返回的是一个新对象

//        时间戳 Instant  可以和 Date  相互转换。
        Instant.now(); //得到时间戳
        System.out.println(Instant.now());
        System.out.println( Date.from(Instant.now()));
        System.out.println( Date.from(Instant.now()).toInstant());

        //日期格式化：



    }
}
